package cn.jimmie.learn.plugin;

import android.app.Activity;
import android.content.Intent;

import cn.jimmie.learn.pbc.resource.PluginConst;
import cn.jimmie.learn.pbc.resource.ISdk;

/**
 * function :
 *
 * <p> Create Time:  2019年02月13日 15:47 </p>
 * <p> @author Jimmie.Qian  </p>
 */
public final class SdkInstance implements ISdk {

    @Override
    public void login(Activity activity) {
        Intent intent = new Intent(PluginConst.PLUGIN_ACTION);
        intent.putExtra(PluginConst.FRAGMENT_NAME, PluginConst.FragmentName.LOGIN);
        activity.startActivity(intent);
    }

    // =============== 单例创建 ====================
    // 声明为 volatile 是为了避免在多线程中,new对象时,指令重排,
    // 造成对象未创建,而判断为非空的情况
    private static SdkInstance sInstance = new SdkInstance();

    private SdkInstance() {
        // 防止反射调用,被创建出多个实例
        if (sInstance != null)
            throw new RuntimeException("instance exist");
    }

    public synchronized static SdkInstance getInstance() {
//        // 不加锁,判断是否为空, 在锁竞争的情况下,提高性能
//        if (sInstance == null) {
//            // 只有当为空的时候,加锁创建
//            synchronized (SdkInstance.class) {
//                if (sInstance == null)
//                    sInstance = new SdkInstance();
//            }
//        }
        return sInstance;
    }
}
